1. Field of the Invention
The present invention relates in general to video encoding, and more specifically to a system and method of implementing flexible macroblock ordering while reducing data traffic and power consumption.
2. Description of the Related Art
The Advanced Video Coding (AVC) standard, Part 10 of MPEG4 (Motion Picture Experts Group), otherwise known as H.264, includes advanced compression techniques that were developed to enable transmission of video signals at a lower bit rate or storage of video signals using less storage space. The newer standard outperforms video compression techniques of prior standards in order to support higher quality streaming video at lower bit-rates and to enable internet-based video and wireless applications and the like. The standard defines the syntax of the encoded video bitstream along with a method of decoding the bitstream. Each video frame is subdivided and encoded at the macroblock (MB) level, where each MB is a 16×16 block of pixels. Each MB is encoded in ‘intra-prediction’ mode in which a prediction MB is formed based on reconstructed macroblocks in the current frame, or ‘inter-prediction’ mode in which a prediction MB is formed based on the macroblocks of the reference frames. The intra-prediction coding mode applies spatial information within the current frame in which the prediction MB is formed from samples in the current frame that have previously encoded, decoded and reconstructed. The inter-prediction coding mode utilizes temporal information from previous and/or future reference frames to estimate motion to form the prediction MB.
The H.264 standard introduced a new ability referred to as flexible macroblock ordering (FMO). FMO partitions a video frame into multiple slice groups, where each slice group contains a set of macroblocks which could be in nonconsecutive positions and could be anywhere in a frame. When used effectively, FMO significantly enhances robustness to data losses by transmitting macroblocks in a pre-determined slice group order so that the decoder has a better chance of recovering lost or corrupted macroblocks of one slice group using available macroblocks of other slice groups. The conventional method to implement FMO is to encode and then transmit the macroblocks within a slice group. The conventional method, however, loads data multiple times from a previously encoded video frame to predict the current frame during inter-prediction encoding. This results in a heavy data loading from main memory (or external memory) and high power consumption for any application, particularly wireless applications.
It is desired to provide a system and method which achieves the benefits of FMO without increasing data traffic or power consumption.